#include"ThreadPool_V3.hpp"
#include<memory>
#include"Task.hpp"


int main()
{
    //V1版本：当程序运行起来变成进程，对象就已经准备好了
    //创建线程池对象
    //std::unique_ptr<ThreadPool<Task>> tp(new ThreadPool<Task>());
    //初始化线程池
    //tp->init();
    //启动多线程
    //tp->start();

    //V2版本懒汉模式，当程序运行起来变成进程，对象并没有立即准备好
    //而是你需要使用这个对象的时候，进程才会为你在内存中开辟对应的空间
    while(true)
    {
        int x,y;
        char op;
        std::cout << "please Enter x> ";
        std::cin >> x;
        std::cout << "please Enter y> ";
        std::cin >> y;
        std::cout << "please Enter op(+-*/%)> ";
        std::cin >> op;

        Task t(x,y,op);
        ThreadPool<Task>::getinstance()->pushTask(t);
        //tp->pushTask(t);
        //1.生产者获取任务
        //2.生产者将任务push到任务队列，交给多线程处理
        //sleep(1)充当生产者获取任务：比如从网络中读取数据
        sleep(1);
    
    }
    
    
}
